package models

import "gorm.io/gorm"

// ImageInfo 图片信息
type ImageInfo struct {
	gorm.Model
	ImageId  string `json:"image_id" gorm:"column:image_id;not null;comment:唯一id"`
	Name     string `json:"name" gorm:"column:name;not null;comment:名称"`
	Src      string `json:"src" gorm:"column:src;not null;comment:地址"`
	Size     string `json:"size" gorm:"column:size;comment:大小;default:0"`
	Format   string `json:"format" gorm:"column:size;comment:格式"`
	AuthorId string `json:"author_id" gorm:"column:author_id;not null;comment:作者id(主键);default:0"`
}

func (ImageInfo) TableName() string {
	return "image_info"
}

// RoleInfo 角色信息
type RoleInfo struct {
	gorm.Model
	Name        string `json:"name" gorm:"column:name;comment:名称;not null"`
	Level       int    `json:"level" gorm:"column:level;comment:等级;not null"`
	Permissions string `json:"permissions" gorm:"column:permissions;comment:权限;not null"`
}

func (RoleInfo) TableName() string {
	return "role_info"
}

type Message struct {
	gorm.Model
	From   string `json:"from" gorm:"column:from;comment:发送方"`
	To     string `json:"to" gorm:"column:to;comment:接受方"`
	Type   string `json:"type" gorm:"column:type;comment:类型"`
	Status string `json:"status" gorm:"status;comment:流程"`
	ToName string `json:"to_name" gorm:"column:to_name;comment:对方昵称"`
	Body   string `json:"body" gorm:"column:body;comment:描写"`
}

func (Message) TableName() string {
	return "message_info"
}

// UserInfo 用户
type UserInfo struct {
	gorm.Model
	UserID    string `json:"user_id" gorm:"column:user_id;comment:用户uid"`
	Name      string `json:"name" gorm:"column:name;comment:用户姓名"`
	NickName  string `json:"nick_name" gorm:"nick_name;comment:昵称"`
	Username  string `json:"username" gorm:"column:username;comment:用户名"`
	Password  string `json:"password" gorm:"column:password;comment:密码"`
	Phone     string `json:"phone" gorm:"column:phone;comment:电话"`
	ImgId     string `json:"img_id" gorm:"column:img_id;comment:图片ID"`
	ImgSrc    string `json:"img_src" gorm:"column:img_src;comment:图片地址"`
	ImgHttp   string `json:"img_http" gorm:"column:img_http;comment:图片链接"`
	Friends   string `json:"friends" gorm:"column:friends;comment:好友"`
	Groups    string `json:"groups" gorm:"column:groups;comment:群"`
	Text      string `json:"text" gorm:"column:text;comment:签名"`
	Sex       string `json:"sex" gorm:"column:sex;comment:性别"`
	LoginLast string `json:"login_last" gorm:"column:login_last;comment:最后一次登录时间"`
	Status    bool   `json:"status" gorm:"column:status;comment:当前状态"`
}

func (UserInfo) TableName() string {
	return "user_info"
}

type GroupInfo struct {
	gorm.Model
	Name      string `json:"name" gorm:"column:name;comment:群名"`
	OwnerId   string `json:"owner_id"  gorm:"column:owner_id;comment:群主id"`
	OwnerName string `json:"owner_name" gorm:"column:owner_name;comment:群主昵称"`
	ImgId     string `json:"img_id" gorm:"column:img_id;comment:图片ID"`
	ImgSrc    string `json:"img_src" gorm:"column:img_src;comment:图片地址"`
	Peoples   string `json:"peoples" gorm:"column:peoples;comment:群友ids"`
	Managers  string `json:"managers" gorm:"column:managers;comment:管理员ids"`
	MsgIds    string `json:"msg_ids" gorm:"column:msg_ids;comment:消息ids"`
	AllMsg    string `json:"all_msg" gorm:"column:all_msg;comment:全体消息"`
	Text      string `json:"text" gorm:"column:text;comment:签名"`
}

func (GroupInfo) TableName() string {
	return "group_info"
}

type MsgInfo struct {
	gorm.Model
	Name    string `json:"name" gorm:"column:name;comment:群名"`
	GroupId string `json:"group_id"  gorm:"column:group_id;comment:群聊Id"`
	Src     string `json:"src" gorm:"column:src;comment:地址"`
	Body    string `json:"body" gorm:"column:body;comment:内容"`
	Size    int    `json:"size" gorm:"column:size;comment:内容"`
}

func (MsgInfo) TableName() string {
	return "msg_info"
}
